Spring Boot 애플리케이션에서 웹 브라우저의 요청이 들어왔을 때,
정적 컨텐츠, 동적 템플릿, API 응답 중 어떤 방식으로 처리되는지에 대해 정리합니다.
Spring Boot는 클라이언트의 HTTP 요청이 들어오면 아래 순서대로 응답을 결정합니다.
[웹 브라우저 요청]
↓
[스프링 내부 DispatcherServlet]
↓
[static 디렉토리 확인]
↓
[Controller 핸들러 매핑 확인]
↓
[404 에러 또는 예외 처리]
resources/static/
(또는 /public
, /resources
)hello.html
, style.css
, logo.png
<!-- static/hello.html -->
<h1>Hello Static</h1>
✔️ 요청: GET /hello.html
→ 해당 HTML 문서 그대로 브라우저로 전달
resources/templates/
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("name", "Spring Boot");
return "hello";
}
}
<!-- templates/hello.html -->
<p>Hello, [[${name}]]!</p>
✔️ 요청: GET /hello
→ 템플릿 엔진이 서버에서 HTML을 생성해 응답
@RestController
public class HelloApi {
@GetMapping("/api/hello")
public Map<String, String> hello() {
return Map.of("message", "Hello, API");
}
}
✔️ 요청: GET /api/hello
→ { "message": "Hello, API" }
형태(JSON)로 응답